package pkgCalculos;/** Esta clase pertenece a este paquete **/
import pkgListaLigada.ClsLista;
import pkgListaLigada.ClsNodo;

/*
 * Descripción: Esta clase realiza los calculos de la media y la desviación 
 * estándar de los datos leídos
 * @autor: Karla Cristina Obando Narváez
 * Fecha: 06 de Marzo de 2012
 * Programa #1
 */
public class ClsCalculos {  
    
    /**
     * Este método calcula la media de los datos leidos
     * @param lista Este parámetro es una lista ligada que contiene los datos
     * a los cuales se les va a calcular la media
     * @return El valor de la media de los datos leídos
     */
    public static double dMthCalcularMedia(ClsLista lista){
        double dmedia=0;
        double dmediaCalculada=0;
        ClsNodo nodo= lista.MthObtienePrimero();
        /*
         * Mientras el nodo no este vacio, se calcula la media
         */
        while(nodo!=null){
            dmedia += (Double) nodo.getDato();
            nodo= nodo.MthObtieneLiga();
        }
        dmediaCalculada=dmedia/lista.iMthLongitud();
        return dmediaCalculada;
    }
    
    /**
   * Este métodod calcula la desviacion estandar de los datos leidos
   * @param lista este parámetro es una lista ligada que contiene los datos a
   *          los cuales se le van a calcular la desviación estándar
   * @return El valor de la desviacion estandar calculada
   */
    public static double dMthCalcularDesviacion(ClsLista lista){
        double dmedia= dMthCalcularMedia(lista);
        double ddesvCalculada=0;
        double dsumaCalculada=0;
        ClsNodo nodo= lista.MthObtienePrimero(); 
        /*
         * Mientras el nodo no este vacio, se calcula la desviacion
         */
        while (nodo != null) { 
            dsumaCalculada+=Math.pow((Double)nodo.getDato()-dmedia,2);
            nodo=nodo.MthObtieneLiga();
        }
        double dlongitudLista=lista.iMthLongitud();
        ddesvCalculada=Math.sqrt((dsumaCalculada/(dlongitudLista-1)));        
        return ddesvCalculada;
    }   
}